<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 全局作用域
      let a = 1;
      let b = 1;
      function f() {
        // 局部作用域
        let a = 1;
        function g() {
          // 局部作用域
          a = 2;
          console.log(a);
        }
        g(); // 调用g
      }
      f(); // 调用f

      // 什么是作用域链？
      // 函数是可以嵌套函数的，每个函数都有一个局部作用域，这样子，也会形成作用域的嵌套
      // 当访问内层作用域中的某个变量的时候，首先在当前作用域中查找这个变量，如果不存在，往上层查找，直到全局作用域

      // 作用域链的本质: 底层变量的查找机制

      // 查找规则:
      // 1. 优先在当前作用域链中查找变量
      // 2. 如果不存在，往上层作用域中查找变量，直到全局作用域。
    </script>
  </body>
</html>
